package com.smartbus.bus.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.smartbus.common.annotation.Excel;
import com.smartbus.common.core.domain.BaseEntity;

/**
 * 公交车辆信息，管理所有公交车的基本信息、当前线路和设备状态对象 buses
 * 
 * @author ruoyi
 * @date 2025-09-24
 */
public class Buses extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID，自增 */
    private Long id;

    /** 公交车编号，如001、002等 */
    @Excel(name = "公交车编号，如001、002等")
    private String busNumber;

    /** 车牌号码 */
    @Excel(name = "车牌号码")
    private String licensePlate;

    /** 当前运行线路ID，关联bus_routes表 */
    @Excel(name = "当前运行线路ID，关联bus_routes表")
    private Long currentRouteId;

    /** 司机姓名 */
    @Excel(name = "司机姓名")
    private String driverName;

    /** 司机联系电话 */
    @Excel(name = "司机联系电话")
    private String driverPhone;

    /** GPS设备编号 */
    @Excel(name = "GPS设备编号")
    private String gpsDeviceId;

    /** 车载语音系统版本 */
    @Excel(name = "车载语音系统版本")
    private String voiceSystemVersion;

    /** 车辆状态：运营中/停运/维修中 */
    @Excel(name = "车辆状态：运营中/停运/维修中")
    private String status;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 最后更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setBusNumber(String busNumber) 
    {
        this.busNumber = busNumber;
    }

    public String getBusNumber() 
    {
        return busNumber;
    }

    public void setLicensePlate(String licensePlate) 
    {
        this.licensePlate = licensePlate;
    }

    public String getLicensePlate() 
    {
        return licensePlate;
    }

    public void setCurrentRouteId(Long currentRouteId) 
    {
        this.currentRouteId = currentRouteId;
    }

    public Long getCurrentRouteId() 
    {
        return currentRouteId;
    }

    public void setDriverName(String driverName) 
    {
        this.driverName = driverName;
    }

    public String getDriverName() 
    {
        return driverName;
    }

    public void setDriverPhone(String driverPhone) 
    {
        this.driverPhone = driverPhone;
    }

    public String getDriverPhone() 
    {
        return driverPhone;
    }

    public void setGpsDeviceId(String gpsDeviceId) 
    {
        this.gpsDeviceId = gpsDeviceId;
    }

    public String getGpsDeviceId() 
    {
        return gpsDeviceId;
    }

    public void setVoiceSystemVersion(String voiceSystemVersion) 
    {
        this.voiceSystemVersion = voiceSystemVersion;
    }

    public String getVoiceSystemVersion() 
    {
        return voiceSystemVersion;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("busNumber", getBusNumber())
            .append("licensePlate", getLicensePlate())
            .append("currentRouteId", getCurrentRouteId())
            .append("driverName", getDriverName())
            .append("driverPhone", getDriverPhone())
            .append("gpsDeviceId", getGpsDeviceId())
            .append("voiceSystemVersion", getVoiceSystemVersion())
            .append("status", getStatus())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .toString();
    }
}
